﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TPDiseño.Clases_de_Entidad
{
    public class Op_Respuesta
    {

        // Atributos
        private int cod_op_respuesta;
        private int orden_visualizacion;
        private string descripcion;
        private Boolean eliminado;
        private DateTime fecha_elim;
        private int usuario_elim;
        private List<PreguntaTieneResp> preguntasPonderadas; 

        // Propiedades
        public int _cod_op_respuesta
        {
            get
            {
                return cod_op_respuesta;
            }
            set
            {
                cod_op_respuesta = value;
            }
        }
        public int _orden_visualizacion
        {
            get
            {
                return orden_visualizacion;
            }
            set
            {
                orden_visualizacion = value;
            }
        }
        public string _descripcion
        {
            get
            {
                return descripcion;
            }
            set
            {
                descripcion = value;
            }
        }
        public Boolean _eliminado
        {
            get
            {
                return eliminado;
            }
            set
            {
                eliminado = value;
            }
        }
        public DateTime _fecha_elim
        {
            get
            {
                return fecha_elim;
            }
            set
            {
                fecha_elim = value;
            }
        }
        public int _usuario_elim
        {
            get
            {
                return usuario_elim;
            }
            set
            {
                usuario_elim = value;
            }
        }
        
        public List<PreguntaTieneResp> _preguntasPonderadas
        {
            get
            {
                return preguntasPonderadas;
            }
            set
            {
                preguntasPonderadas = value;
            }
        }

        // Constructores
        public Op_Respuesta()
        {
        }
        public Op_Respuesta(int unCod_op_respuesta, int unOrden_visualizacion, string unaDescripcion)
        {

            this.cod_op_respuesta = unCod_op_respuesta;
            this.orden_visualizacion = unOrden_visualizacion;
            this.descripcion = unaDescripcion;

        }

        public Op_Respuesta(int unCod_op_respuesta, int unOrden_visualizacion, string unaDescripcion, List<PreguntaTieneResp> unaListaDePreguntasPonderadas):
            this(unCod_op_respuesta, unOrden_visualizacion, unaDescripcion)
        {

            this.preguntasPonderadas=unaListaDePreguntasPonderadas;

        }


        // Metodos

        public int obtenerPonderacion(Pregunta unaPregunta)
        {
            PreguntaTieneResp preguntaPonderadaBuscada = this._preguntasPonderadas.Find(delegate(PreguntaTieneResp p) { return ReferenceEquals(p._pregunta, unaPregunta); });
                                   
            // Retorno la ponderecion de la pregunta "unaPregunta"...
            return preguntaPonderadaBuscada._ponderacion;
        }


    }
}
